
#ifndef __ENEMY_H__
#define __ENEMY_H__

#include "cEntity.h"

struct sEnemyDesc
{
	sEnemyDesc()
	{
		enemyType = eEnemyType::NORMAL;
		speed = 0.0f;
		foodID = 0;
	}

	eEnemyType::TYPE enemyType;
	tFloat speed;
	tInt foodID;

	sEntityDesc entityDesc;
};

class cEnemy : public cEntity
{
public:
	cEnemy();
	~cEnemy();

	eEntityType::TYPE GetEntityType() const { return eEntityType::ENEMY; }
	void Init(const sEnemyDesc& desc);
	void Update(float dt);

	eEnemyType::TYPE GetEnemyType() const { return m_enemyType; }
	tInt GetFoodID() const { return m_foodID; }

	// events
	void OnHit();

private:
	eEnemyType::TYPE m_enemyType;
	tInt m_foodID;
	tFloat m_speed;

	// type variables
	tBool m_doubleHP;
	b2Vec2 m_shakePos;
	tBool m_zigzagMove;
	cTimeCounter m_timer;

	tBool m_kernelBreaked;
};

#endif // __ENEMY_H__